This invention relates generally to the field of computer graphics and more particularly to the field of data compression within a computer graphics system.
Computer graphics workstations are used for a number of different applications such as computer-aided design (CAD) and computer-aided manufacturing (CAM). These applications often require three dimensional (3D) modeling capability and generally require greater speed in rendering more complicated models as time progresses.
Thus pressure is placed on designers of computer graphics workstations to perform more complicated calculations to provide more accurate rendering of models in shorter amounts of time. Many design techniques are used by workstation designers to achieve these goals.
One possible embodiment of a computer graphics accelerator is shown in FIG. 2. This system is described in detail below. For now, note that the tile builder, texture mapper, and display unit all communicate with a single frame buffer memory through a memory controller. In this embodiment the frame buffer memory contains the texture data in addition to the data required for display and the data that is being manipulated prior to display (double buffering). Since the frame buffer memory is accessed by different functions, the memory controller must contain arbitration logic to determine which function has access to the frame buffer memory at any given moment. Sometimes two or more functions will require access to the frame buffer memory at the same time and the memory controller must prioritize these requests. Thus, there is a need in the art for techniques that reduce accesses to the frame buffer memory or otherwise improve graphics performance.
In a computer graphics system, displaying any given graphics data on a monitor, the type of compression of screen data is chosen during processing. Further, the compression technique is allowed to vary on a per row basis within a block of pixels. The type of compression is encoded with the screen data and stored in screen memory. As the compressed graphics is read from screen memory just prior to display, the screen data is decompressed.